שיעור מספר 8: "אמא יש רק אחת" )הורשה I(

Size: px
Start display at page:

Download "שיעור מספר 8: "אמא יש רק אחת" )הורשה I("

Transcription

1 שיעור מספר 8: "אמא יש רק אחת" )הורשה I( שחר מעוז בית הספר למדעי המחשב

2 על סדר היום יחסים בין מחלקות ירושה כיחס is-a טיפוס סטטי וטיפוס דינמי המחלקה Object מחלקות מופשטות 2

3 מלבן צבעוני נרצה לבנות מחלקה המייצגת מלבן צבעוני שצלעותיו מקבילות לצירים נציג 3 גרסאות למחלקה, והחסרונות של כל גרסה ונעמוד על היתרונות לבסוף, נתמקד בגרסה השלישית )המשתמשת במנגנון הירושה של )Java ונחקור דרכה את מנגנון הירושה 3

4 package il.ac.tau.cs.software1.shapes; public class ColoredRectangle1 { private Color col; private IPoint topright; private IPoint bottomleft; private PointFactory factory; /** constructor using points */ public ColoredRectangle1 (IPoint bottomleft, IPoint topright, PointFactory factory, Color col) { this.bottomleft = bottomleft; this.topright = topright; this.factory = factory; this.col = col; /** constructor using coordinates */ public ColoredRectangle1 (double x1, double y1, double x2, double y2, PointFactory factory, Color col) { this.factory = factory; topright = factory.createpoint(x1,y1); bottomleft = factory.createpoint(x2,y2); this.col = col; 4

5 שאילתות /** returns a point representing the bottom-right corner of the rectangle*/ public IPoint bottomright() { return factory.createpoint(topright.x(), bottomleft.y()); /** returns a point representing the top-left corner of the rectangle*/ public IPoint topleft() { return factory.createpoint(bottomleft.x(), topright.y()); /** returns a point representing the top-right corner of the rectangle*/ public IPoint topright() { return factory.createpoint(topright.x(), topright.y()); /** returns a point representing the bottom-left corner of the rectangle*/ public IPoint bottomleft() { return factory.createpoint(bottomleft.x(), bottomleft.y()); 5

6 שאילתות /** returns the horizontal length of the current rectangle */ public double width(){ return topright.x() - bottomleft.x(); /** returns the vertical length of the current rectangle */ public double height(){ return topright.y() - bottomleft.y(); /** returns the length of the diagonal of the current rectangle */ public double diagonal(){ return topright.distance(bottomleft); /** returns the rectangle's color */ public Color color() { return col; 6

7 פקודות /** move the current rectangle by dx and dy */ public void translate(double dx, double dy){ topright.translate(dx, dy); bottomleft.translate(dx, dy); /** rotate the current rectangle by angle degrees with respect to (0,0) */ public void rotate(double angle){ topright.rotate(angle); bottomleft.rotate(angle); /** change the rectangle's color */ public void setcolor(color c) { col = c; 7

8 /** returns a string representation of the rectangle */ public String tostring(){ return "bottomright=" + bottomright() + "\tbottomleft=" + bottomleft + "\ttopleft=" + topleft() + "\ttopright=" + topright ; "\tcolor is: " + col ; הקוד לעיל דומה מאוד לקוד שכבר ראינו זהו שכפול קוד נוראי הספק צריך לתחזק קוד זה פעמיים כאשר מתגלה באג, או כשנדרש שינוי )למשל rotate לא שומר על הפרופורציה של המלבן המקורי(, יש לדאוג לתקנו בשני מקומות הדבר נכון בכל סדר גודל: פונקציה, מחלקה, ספרייה, תוכנה, מערכת הפעלה וכו'( 8

9 Just Do It ארגונים אשר אינם עושים שימוש חוזר בקוד רק כי הוא "לא נכתב אצלנו" נאלצים לחרוג מתחומי העיסוק שלהם לצורכי כתיבת תשתיות הדבר סותר את רעיון ההכמסה וההפשטה שביסודו של התכנות מונחה העצמים ומפחית את תפוקת הארגון 9

10 Just Do It בהינתן מחלקת המלבן שראינו בשיעורים הקודמים, ניתן לראות את המלבן הצבעוני כהתפתחות אבולוציונית של המחלקה ספק תוכנה מחויב כלפי לקוחותיו לתאימות אחורה compatibility( )backward כלומר קוד שסופק ימשיך להיתמך )לעבוד( גם לאחר שיצאה גרסה חדשה של אותו הקוד הדבר מחייב ספקים להיות עיקביים בשדרוגי התוכנה כדי להיות מסוגלים לתמוך במקביל בכמה גרסאות אחת הדרכים לעשות זאת היא ע"י שימוש חוזר באמצעות הכלה של מחלקות קיימות בקוד 10

11 package il.ac.tau.cs.software1.shapes; public class ColoredRectangle2 { private Color col; private Rectangle rect; /** constructor using points */ public ColoredRectangle2 (IPoint bottomleft, IPoint topright, PointFactory factory, Color col) { this.rect = new Rectangle(bottomLeft, topright, factory); this.col = col; /** constructor using coordinates */ public ColoredRectangle2 (double x1, double y1, double x2, double y2, PointFactory factory, Color col) { this.rect = new Rectangle(x1, y1, x2, y2, factory); this.col = col; 11

12 שאילתות /** returns a point representing the bottom-right corner of the rectangle*/ public IPoint bottomright() { return rect.bottomright(); /** returns a point representing the top-left corner of the rectangle*/ public IPoint topleft() { return rect.topleft() ; /** returns a point representing the top-right corner of the rectangle*/ public IPoint topright() { return rect.topright() ; /** returns a point representing the bottom-left corner of the rectangle*/ public IPoint bottomleft() { return rect.bottomleft(); 12

13 שאילתות /** returns the horizontal length of the current rectangle */ public double width(){ return rect.width(); /** returns the vertical length of the current rectangle */ public double height(){ return rect.height(); /** returns the length of the diagonal of the current rectangle */ public double diagonal(){ return rect.diagonal(); /** returns the rectangle's color */ public Color color() { return col; 13

14 פקודות /** move the current rectangle by dx and dy */ public void translate(double dx, double dy){ rect.translate(dx,dy); /** rotate the current rectangle by angle degrees with respect to (0,0) */ public void rotate(double angle){ rect.rotate(angle); /** change the rectangle's color */ public void setcolor(color c) { col = c; 14

15 /** returns a string representation of the rectangle */ public String tostring(){ return rect + "\tcolor is: " + col ; המחלקה ColoredRectangle2 מכילה Rectangle כשדה שלה המחלקה החדשה תומכת בכל שרותי המחלקה המקורית פעולות שניתן היה לבצע על המלבן המקורי מופנות לשדה rect delegation( - האצלה( הערה: בסביבות פיתוח מודרניות ניתן לחולל קוד זה בצורה אוטומטית! נשים לב כי המתודה tostring מוסיפה התנהגות למתודה tostring של המלבן המקורי )הוספת הצבע( הבנאים של המחלקה החדשה קוראים לבנאים של המחלקה Rectangle 15

16 שימוש חוזר ותחזוקה כעת קל יותר לתחזק במקביל את שני המלבנים כל שינוי במחלקה Rectangle יתבטא אוטומטית במחלקה ColoredRectangle2 וכך ישדרג הן את קוד לקוחות Rectangle והן את קוד לקוחות ColoredRectangle2 העיקביות בין שתי המחלקות מובנית ColoredRectangle2 הוא לקוח של,Rectangle ואולם נרצה לבטא יחס נוסף הקיים בין המחלקות ניזכר ביחסי המחלקות שבהם נתקלנו עד כה 16

17 יחסים בין מחלקות Association דו כיוונית: )הכרות, קשירות, שיתופיות( חד כיוונית: רפלקסיבית: 17

18 יחסים בין מחלקות Aggregation )מכלול( סוג של Association המבטא הכלה החלקים עשויים להתקיים גם ללא המיכל המיכל מכיר את רכיביו אבל לא להיפך בדרך כלל ל- Collection יש יחס כזה עם רכיביו 18

19 יחסים בין מחלקות Composition )הרכבה( מקרה פרטי של Aggregation שבו הרכיב תלוי במיכל )משך קיום למשל( בשיעור שעבר ראינו שניתן לבטא הרכבה ע"י שימוש בשדה מופע שטיפוסו הוא מחלקה פנימית, אולם זהו מקרה מאוד קיצוני של הרכבה )עם תלות הדוקה בין המחלקות( 19

20 Composition vs. Aggregation ההבדל בין יחסי הכלה ליחסי הרכבה הוא עדין ההבדל הוא קונספטואלי שכן היחס מתקיים בעולם האמיתי, ובשפת Java קשה לבטא אותו בשפת התכנות בין אותן שתי המחלקות יכולים להתקיים יחסים אחרים בהקשרים שונים 20

21 יחסים בין מחלקות - דיון איך נמפה יחסי ספק-לקוח ל- 3 היחסים לעיל? מה היחס בין מלבן ונקודותיו ( vs. aggregation?)composition מה ההבדל ביחס שבין מלבן ונקודותיו ליחס שבין מלבן צבעוני ומלבן? 21

22 יחס is-a כאשר מחלקה היא סוג של מחלקה אחרת, אנו אומרים שחל עליה היחס is-a class A is-a class B יחס זה נקרא גם Generalization יחס זה אינו סימטרי מלבן צבעוני הוא סוג של מלבן אבל לא להיפך ניתן לראות במחלקה החדשה מקרה פרטי, סוג-מיוחד-של המחלקה המקורית אם מתייחסים לקבוצת העצמים שהמחלקה מתארת, אז ניתן לראות שהקבוצה של המחלקה החדשה היא תת קבוצה של הקבוצה של המחלקה המקורית בדרך כלל יהיו למחלקה החדשה תכונות ייחודיות, המאפיינות אותה, שלא באו לידי ביטוי במחלקה המקורית )או שבוטאו בה בכלליות( 22

23 Is-a Example Clock settime() getseconds() getminutes() gethours() secondelapsed()... AlarmClock AnalogClock setalarm() setalarmstate() getsecondspointerangle() getminutespointerangle() gethourspointerangle() 23

24 מנגנון הירושה )הורשה?( Java מספקת תחביר מיוחד לבטא יחס is-a בין מחלקות )במקום הכלת המחלקה המקורית כשדה במחלקה החדשה( המנגנון מאפשר שימוש חוזר ויכולת הרחבה של מחלקות קיימות מחלקה אשר תכריז על עצמה שהיא extends מחלקה אחרת, תקבל במתנה )בירושה( את כל תכונות אותה מחלקה )כמעט( כאילו שהן תכונותיה שלה כל מחלקה ב Java מרחיבה מחלקה אחת בדיוק מממשת מנשקים )0 או יותר(( )ואולי 24

25 ירושה מ Rectangle package il.ac.tau.cs.software1.shapes; public class ColoredRectangle3 extends Rectangle { private Color col; // המחלקה ColoredRectangle3 יורשת מהמחלקה Rectangle נוסף על השדות והשרותים של Rectangle היא מגדירה שדה נוסף - col בנאים ומתודות סטטיות אינם נורשים 25

26 מונחי ירושה Rectangle public Rectangle(IPoint bottomleft, IPoint topright ) public double width() public double diagonal() public void translate(double dx, double dy) public void rotate(double angle) public IPoint bottomright()... הורה מחלקת בסיס (base) מחלקת על class) (super קשר ירושה ב- JAVA הרחבה (extension) ColoredRectangle public ColoredRectangle (IPoint bottomleft, ) public Color color() public void setcolor(color col)... צאצא מחלקה נגזרת (derived) תת מחלקה (subclass) 26

27 בנאים במחלקות יורשות מחלקות נבנות מלמעלה למטה )מההורה הקדמון ביותר ומטה( השורה הראשונה בכל בנאי כוללת קריאה לבנאי מחלקת הבסיס בתחביר: super(constructorargs) מדוע? אם לא נכתוב בעצמנו את הקריאה לבנאי מחלקת הבסיס יוסיף הקומפיילר בעצמו את השורה super() במקרה זה, אם למחלקת הבסיס אין בנאי ריק זוהי שגיאת קומפילציה 27

28 בנאים במחלקות יורשות /** constructor using points */ public ColoredRectangle3(IPoint bottomleft, IPoint topright, PointFactory factory, Color col) { super(bottomleft, topright, factory); this.col = col; /** constructor using coordinates */ public ColoredRectangle3(double x1, double y1, double x2, double y2, PointFactory factory, Color col) { super(x1, y1, x2, y2, factory); this.col = col; איך ניתן למנוע את שכפול הקוד בין הבנאים? 28

29 הוספת שרותים המחלקה היורשת יכולה להוסיף שרותים שלא הופיעו במחלקת הבסיס: נוספים )מתודות( /** returns the rectangle's color */ public Color color() { return col; /** change the rectangle's color */ public void setcolor(color c) { col = c; 29

30 דריסת שרותים )overriding( מחלקה יכולה לדרוס מתודה שהיא קיבלה בירושה שיקולי יעילות הוספת "תחומי אחריות" על המחלקה היורשת להגדיר מתודה בשם זהה ובחתימה זהה למתודה שהתקבלה בירושה )אחרת זוהי העמסה ולא דריסה( כדי להשתמש במתודה שנדרסה, ניתן להשתמש בתחביר: super.methodname(arguments) 30

31 דריסת שרותים )overriding( המחלקה ColoredRectangle3 רוצה לדרוס את tostring להוסיף לה גם את הדפסת צבע המלבן כדי למנוע שכפול קוד היא משרשרת את תוצאת tostring המקורית )שנדרסה( ללוגיקה החדשה כדי public String tostring() { return super.tostring() + "\tcolor is " + col; 31

32 דריסת שרותים public String tostring() { return tostring() + "\tcolor is " + col; מה יעשה הקוד הבא? 32

33 שימוש במלבן package il.ac.tau.cs.software1.shapes; public class Client { public static void main(string[] args) { IPoint tr = new PolarPoint(3.0, (1.0/4.0)*Math.PI); // theta now is 45 degrees IPoint bl = new CartesianPoint(1.0, 1.0); PointFactory factory = new PointFactory(); // or eg. (true,false) ColoredRectangle3 rect = new ColoredRectangle3(bl, tr, factory, Color.BLUE); rect.translate(10, 20); rect.setcolor(color.green); System.out.println(rect); Inherited from Rectangle Added in ColoredRectangle3 tostring was overridden in ColoredRectangle3 33

34 עניין של ספקים ירושה הוא מנגנון אשר בא לשרת את הספק כל עוד המחלקה מממשת מנשק שהוגדר מראש, ללקוח )והוא גם לא יודע( עם מי הוא עובד לא איכפת ברמה התחבירית ניתן לראות ירושה אם נחליף את שם השדה rect שב- super נקבל התנהגות דומה לזו של כסוכר תחבירי להכלה ColoredRectangle2 להיות ColoredRectangle3 ואולם מנגנון הירושה פרט לחסכון התחבירי כולל גם התנהגות פולימורפית )כפי שנדגים מיד( 34

35 עקרון ההחלפה principle) (substitution עקרון ההחלפה פירושו, שבכל הקשר שבו משתמשים במחלקה המקורית ניתן להשתמש )לוגית( במחלקה החדשה במקומה נשתמש במנגנון הירושה רק כאשר המחלקה החדשה מקיימת יחס is-a עם מחלקה קיימת וכן נשמר עקרון ההחלפה אי שמירה על שני עקרונות אלו )יחס is-a מוביל לבעיות תחזוקה במערכות גדולות ועקרון ההחלפה( 35

36 פולימורפיזם וירושה package il.ac.tau.cs.software1.shapes; public class Client { public static void main(string[] args) { IPoint tr = new PolarPoint(3.0, (1.0/4.0)*Math.PI); // theta now is 45 degrees IPoint bl = new CartesianPoint(1.0, 1.0); PointFactory factory = new PointFactory(true, true); Rectangle rect = new ColoredRectangle3(bl, tr, factory, Color.BLUE); rect.translate(10, 20); rect.setcolor(color.green); // Compilation Error System.out.println(rect); 36

37 טיפוס סטטי ודינמי טיפוס של עצם: טיפוס הבנאי שלפיו נוצר העצם. קבוע ואינו משתנה לאורך חיי העצם. טיפוס זה לגבי הפניות (references) לעצמים מבחינים בין: טיפוס סטטי: הטיפוס שהוגדר בהכרזה על ההפניה להיות מנשק או מחלקה(. הטיפוס הדינאמי: טיפוס העצם המוצבע הטיפוס הדינאמי חייב להיות נגזרת של הטיפוס הסטטי )יכול Rectangle r = new ColoredRectangle3( ); טיפוס העצם הטיפוס הדינמי של ההפניה הטיפוס הסטטי של ההפניה 37

38 טיפוס סטטי ודינמי הקומפיילר הוא סטטי: שמרן, קונסרבטיבי הפעלת שרות על הפנייה מחייב את הגדרת השרות בטיפוס הסטטי של ההפנייה מנגנון זמן הריצה הוא דינאמי: פולימורפי, וירטואלי, dynamic dispatch השרות שיופעל בזמן ריצה הוא השרות שהוגדר בעצם המוצבע בפועל )הטיפוס הדינאמי של ההפנייה( Rectangle r = new ColoredRectangle3( ); טיפוס העצם הטיפוס הדינמי של ההפניה הטיפוס הסטטי של ההפניה 38

39 טיפוס סטטי ודינמי של הפניות void expectrectangle(rectangle r); void expectcoloredrectangle(coloredrectangle3 cr); void bar() { Rectangle r = new Rectangle(...); ColoredRectangle3 cr = new ColoredRectangle3(...); r = cr; expectcoloredrectangle(cr); expectrectangle(cr); expectrectangle(r); expectcoloredrectangle(r); The static type of r remains Rectangle. Its dynamic type is now ColoredRectangle3 Compilation Error although the dynamic type of r is ColoredRectangle3 39

40 טיפוס סטטי טיפוס סטטי של מחלקה צריך להיות הכללי האפשרי בהקשר שבו הוא מופיע ביותר עדיף מנשק, אם קיים מחלקה המרחיבה מחלקה אחרת מממשת אוטומטית את כל המנשקים שמומשו במחלקת הבסיס כלומר ניתן להעביר אותה בכל מקום שבו ניתן היה להעביר את אותם המנשקים 40

41 ניראות וירושה מה אם המחלקה ColoredRectangle3 מעוניינת לממש מחדש את המתודה tostring )ולא להשתמש במימוש הקודם כקופסא שחורה( רק כתרגיל זה לא רצוי ולא נחוץ קירוב ראשון: /** returns a string representation of the rectangle */ public String tostring(){ return "bottomright is " + bottomright() + "\tbottomleft is " + bottomleft + "\ttopleft is " + topleft() + "\ttopright is " + topright + "\tcolor is: " + col ; השדות הוגדרו ב Rectangle כ private ועל כן הגישה אליהם אסורה 41

42 ניראות וירושה על אף שהמחלקה ColoredRectangle3 יורשת מהמחלקה Rectangle )ואף מכילה אותה!( אין לה הרשאת גישה לשדותיה הפרטיים של Rectangle כדי לגשת למידע זה עליה לפנות דרך המתודות הציבוריות: /** returns a string representation of the rectangle */ public String tostring(){ return "bottomright is " + bottomright() + "\tbottomleft is " + bottomleft() + "\ttopleft is " + topleft() + "\ttopright is " + topright() + "\tcolor is: " + col ; 42

43 ניראות וירושה קיימים כמה חסרונות בגישה של מחלקה יורשת לתכונותיה הפרטיות של מחלקת הבסיס בעזרת מתודות ציבוריות: יעילות סרבול קוד לשם כך הוגדרה דרגת ניראות חדשה protected שדות שהוגדרו כ protected מאפשרים גישה מתוך: המחלקה המגדירה, מחלקות נגזרת, מחלקות באותה החבילה בשפות מונחות עצמים אחרות protected אינה כוללת מחלקות באותה החבילה 43

44 package il.ac.tau.cs.software1.shapes; public class Rectangle { ניראות וירושה protected IPoint topright; protected IPoint bottomleft; private PointFactory factory; // package il.ac.tau.cs.software1.otherpackage; public class ColoredRectangle3 extends Rectangle { /** returns a string representation of the rectangle */ public String tostring(){ return "bottomright is " + bottomright() + "\tbottomleft is " + bottomleft + "\ttopleft is " + topleft() + "\ttopright is " + topright + "\tcolor is: " + col ; 44

45 ניראות וירושה Modifier: Accessed by class where member is defined Accessed by Package Members Accessed by Sub-classes Accessed by all other classes Private Yes No No No Package (default) Yes Yes No (unless sub-class happens to be in same package) No Protected Yes Yes Yes (even if sub-class & super-class are in different packages) No Public Yes Yes Yes Yes 45

46 private vs. protected יש מתכנתים שטוענים כי ניראות private סותרת את רוח ה OO וכי לו היתה ב Java ניראות protected אמיתית )ללא )package היה צריך להשתמש בה במקום private תמיד אחרים טוענים ההיפך שתי הגישות מקובלות ולשתיהן נימוקים טובים הבחירה בין שתי הגישות היא פרגמטית ותלויה בסיטואציה 46

47 private vs. protected בעד protected Rectangle,coloredRectangle is a הוא עומד ב"מבחן ההחלפה" ולכן לא הגיוני שלא יהיו לו אותן הזכויות. coloredrectangle has a Rectangle )מכיל בתוכו( ולכן יש צורך לאפשר לו גישה יעילה ופשוטה למימושו הפנימי 47

48 private vs. protected בעד :private כשם שאנו מסתירים מלקוחותינו את המימוש כדי להגן על שלמות המידע עלינו להסתיר זאת גם מצאצאנו איננו מכירים את יורשנו כפי שאיננו מכירים את לקוחותינו צאצא עם עודף כח עלול להפר את חוזה מחלקת הבסיס, להעביר את עצמו ללקוח המצפה לקבל את אביו ולשבור את התוכנה 48

49 מניעת ירושה מתודה שהוגדרה כ final לא ניתן יהיה לדרוס במחלקות נגזרת ממחלקה שהוגדרה כ final לא ניתן יהיה לרשת דוגמא: המחלקה String היא.final מדוע? public final class String { public class MyString extends String{ שגיאת קומפילציה 49

50 כולם יורשים מ Object אמרנו קודם כי כל מחלקה ב Java יורשת ממחלקה אחת בדיוק. ומה אם הגדרת המחלקה לא כוללת פסוקית? extends במקרה זה מוסיף הקומפיילר במקומנו את הפסוקית extends Object public class Rectangle { public class Rectangle extends java.lang.object { 50

51 כולם יורשים מ Object המחלקה Object מהווה בסיס לכל המחלקות ב Java )אולי בצורה טרנזיטיבית( ומכילה מספר שרותים בסיסיים שכל מחלקה צריכה )?( חלק מהמתודות קשורות לתכנות מרובה חוטים programming( )multithreaded וילמדו בקורסים מתקדמים 51

52 כולם יורשים מ Object 52

53 שיבוט והשוואה - clone הינה פעולה אשר יוצרת עותק זהה לזה של העצם המשובט ומחזירה מצביע אליו לא מובטח כי מימוש ברירת המחדל יעבוד אם העצם המבוקש אינו implements Cloneable equals בדר"כ מבטאת השוואה בין שני עצמים שדה-שדה. ע"י האופרטור '==' )השוואת מימוש ברירת המחדל של :Object הפניות( בהקשר הזה ניתן לדבר על, deep_equals ו- deep_clone 53

54 שיבוט עצמים x = y.clone () 54

55 שיבוט רדוד ושיבוט עמוק Deep cloning and shallow cloning כדי לדון בסוגים של שיבוט עצמים נציג את המחלקה PERSON1 המייצגת אדם )איש או אישה( ששדות המופע שלו כוללים את שמו/ה האיש/ה שאותו/ה הוא/י אוהב/ת בעל/ת הבית שלו/ה האהוב ובעל הבית אף הם מטיפוס PERSON1 איש או אישה ויכולים להיות 55

56 שיבוט רדוד ושיבוט עמוק איך תשפיע הפעולה: b = a 56

57 שיבוט רדוד ושיבוט עמוק b איך תשפיע הפעולה: c = a.clone() 57

58 שיבוט רדוד ושיבוט עמוק איך תשפיע הפעולה: d = a.deep_clone() 58

59 deep_clone() אינה מתודה סטנדרטית של.Object בחלק מן המקרים נממש את clone במובן עמוק )ריקורסיבי( ולפעמים במובן רדוד 59

60 מנשקים ויחס ירושה כשם ששתי מחלקות מקיימות יחס ירושה כך גם שני מנשקים יכולים לקיים את אותו היחס מחלקה המממשת מנשק מחויבת לממש את כל המתודות של אותו מנשק וכל המתודות שהוגדרו בהוריו לדוגמא: סוגי מחסניות <<interface>> IStack <<interface>> IBoundedStack <<interface>> IUnBoundedStack <<interface>> ISumStack 60

61 Collection Interfaces Unordered Rejects duplicates Unordered Rejects duplicates <<interface>> Collection <<interface>> Map <<interface>> Set <<interface>> List <<interface>> Queue <<interface>> SortedMap Ordered Allows duplicates FIFO Order Allows duplicates Ordered Rejects duplicates <<interface>> SortedSet Ordered Rejects duplicates 61

62 היררכיות ירושה מחלקות רבות במערכות מונחות עצמים הן חלק מ"עצי ירושה" או "היררכיות ירושה" שורש העץ מבטא קונספט כללי וככל שיורדים במורד עץ הירושה המחלקות מייצגות רעיונות צרים יותר למרות שבשפת Java בחרו לאמר שמחלקה יורשת מרחיבה מחלקת בסיס, הרי שבמובן מסוים היא מצמצמת את קבוצת העצמים שהיא מתארת 62

63 אמא יש רק אחת נדגיש, כי לכל מחלקה יש מחלקת בסיס אחת בדיוק, ועל כן גרף הירושה הוא בעצם עץ )ששורשו המחלקה )Object מימוש מנשקים אינו חלק ממנגנון הירושה זאת על אף שבין מנשקים לבין עצמם יש יחסי ירושה דוגמא לעץ ירושה: צורות גיאומטריות במישור 63

64 היררכית מחלקות ומנשקים <<interface>> Shape Ellipse Polygon Circle Trapezoid Parallelogram Triangle Diamond Rectangle 64

65 abstract classes למצולע )polygon( ולאליפסה יש צבע עץ הירושה כפי שמצויר בשקף הקודם, יגרום לשכפול קוד )השדה color והמתודות ישוכפלו ויתוחזקו פעמיים( מחד, לא ניתן להוסיף למנשק שדות או מימושי מתודות מאידך, אם ניצור לשתי המחלקות מחלקה שהיא אב משותף מה יהיו מימושיו עבור היקף )דרך חישוב ההיקף עבור מצולע כלשהו ועבור אליפסה כלשהי שונה בתכלית( לשם כך קיימת המחלקה המופשטת class( )abstract מחלקה עם מימוש חלקי 65

66 abstract classes מחלקה מופשטת דומה למחלקה רגילה עם הסייגים הבאים: ניתן לא לממש מתודות שהגיעו בירושה ממחלקת בסיס או מנשקים ניתן להכריז על מתודות חדשות ולא לממשן לא ניתן ליצור מופעים של מחלקה מופשטת במחלקה מופשטת ניתן לממש מתודות ולהגדיר שדות מחלקות מופשטות משמשות כבסיס משותף למחלקות יורשות לצורך חיסכון בשכפול קוד נגדיר את המחלקה AbstractShape 66

67 היררכית מחלקות ומנשקים <<interface>> Shape <<abstract>> AbstractShape Ellipse Polygon Circle Trapezoid Parallelogram Triangle Diamond Rectangle 67

68 המנשק Shape public interface Shape { public double perimeter(); public void display(); public void rotate(ipoint center, double angle); public void translate(ipoint p); public Color getcolor(); public void setcolor(color c); //... 68

69 המחלקה המופשטת AbstractShape public abstract class AbstractShape implements Shape { protected Color color ; public Color getcolor() { return color ; public void setcolor(color c) { color = c ; המחלקה מממשת רק חלק מן המתודות של המנשק כדי לחסוך שכפול קוד ב"מורד ההיררכיה" את המתודות הלא ממומשות היא מציינת ב abstract public abstract void display(); public abstract double perimeter(); public abstract void rotate(ipoint center, double angle); public abstract void translate(ipoint p); 69

70 המחלקה המופשטת AbstractShape public abstract class AbstractShape implements Shape { protected Color color ; public Color getcolor() { return color ; אפשר לוותר על ההצהרה של מתודות לא ממומשות public void setcolor(color c) { color = c ; 70

71 הגדרת בנאי במחלקה מופשטת public abstract class AbstractShape implements Shape { protected Color color ; public AbstractShape (Color c) { this.color = c ; public Color getcolor() { return color ; public void setcolor(color c) { color = c ; ניתן )ורצוי!( להגדיר בנאים במחלקה מופשטת על אף שלא ניתן לייצר מופעים של המחלקה, הבנאי יקרא מתוך בנאים של המחלקות היורשות )קריאות )super ויחסכו בשכפול קוד בין היורשות. 71

72 המחלקה Polygon public class Polygon extends AbstractShape { public Polygon(Color c, IPoint vertices) { super(c); // add vertices to this.vertices... public double perimeter() {... public void display() {... public void rotate(ipoint center, double angle) {... public void translate(ipoint p) {... public int count() { return vertices.size(); private List<IPoint> vertices; 72

73 מחלקות מופשטות ומנשקים מנשקים: כאשר מגדירים מנשק ניתן למקבל את תהליך הפיתוח: צוות שיממש את המנשק במקביל לצוות שישתמש במנשק בפרט ניתן להגדיר תקנים על בסיס אוסף של מנשקים )למשל: )JDBC קוד לקוח שנכתב לעבוד עם מנשק כלשהו ימשיך לרוץ גם אם יועבר לו כארגומנט עצם ממחלקה חדשה המממשת את אותו המנשק כאשר מחלקה מממשת מנשק אחד או יותר, היא נהנית מכל פונקציות השרות אשר כבר נכתבו עבור אותם מנשקים )למשל: )Comparable הורשה: שימוש חוזר בקוד של מחלקה קיימת לצורך הוספה או שינוי פונקציונליות )ColoredRectangle, SmartTurtle )למשל: יצירת היררכיית טיפוסים, כאשר קוד משותף לכמה טיפוסים נמצא בהורה משותף שלהם )למשל )AbstractShape 73

74 לסיכום מנשק קוד לקוח מחלקת ספק מחלקת ספק 2 מחלקת ספק 3 74

75 לסיכום מנשק קוד לקוח מחלקה מופשטת מחלקת ספק מחלקת ספק 2 מחלקת ספק 3 75

76 מחלקות מופשטות ומנשקים האפשרות להגדיר מחלקות מופשטות ללא מימוש כלל )רק מתודות )abstract מטשטשת את ההבחנה בין מנשק ובין מחלקה מופשטת ואולם יש לזכור: מנשק: חיסכון אצל הלקוח מחלקה מופשטת )וירושה בכלל(: חיסכון אצל הספק בשפת ++C מסתדרים עם מחלקות מופשטות בלבד )העונות על שני הצרכים( כדי להגדיר מנשק ב ++C מגדירים מחלקה מופשטת שכל שרותיה מופשטים virtual( )pure ב Java לא ניתן להסתדר עם מחלקות מופשטות בלבד בשל העדר ירושה מרובה ב Java )על ירושה מרובה, בהמשך( 76

תוכנה 1. תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes

תוכנה 1. תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes תוכנה 1 תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes class Outer { static class NestedButNotInner {... class Inner {... מחלקות מקוננות NESTED CLASSES 2 מחלקה מקוננת Class) )Nested

More information

הקלחמ ה תמרב ת ונ וכ ת (static members ) יליזרב דהוא Java תפשב ם דקת מ תונכת ביבא ל ת תטיסרבינוא

הקלחמ ה תמרב ת ונ וכ ת (static members ) יליזרב דהוא Java תפשב ם דקת מ תונכת ביבא ל ת תטיסרבינוא ת כו נו ת ברמת ה מחלקה (static members) אוהד ברזילי תכנות מ תקד ם בשפת Java אוניברסיטת ת ל אביב static keyword שדות המוגדרים כ static מציינים כי הם מוגדרים ברמת המחלקה ולא ברמת עצם כל העצמים של אותה מחלקה

More information

תוכנה 1 בשפת Java תרגול מספר 9: הורשה רובי בוים ומתי שמרת בית הספר למדעי המחשב אוניברסיטת תל אביב

תוכנה 1 בשפת Java תרגול מספר 9: הורשה רובי בוים ומתי שמרת בית הספר למדעי המחשב אוניברסיטת תל אביב תרגול מספר 9: הורשה רובי בוים ומתי שמרת בית הספר למדעי המחשב ירושה ממחלקות קיימות ראינו בהרצאה שתי דרכים לשימוש חוזר בקוד של מחלקה קיימת: הכלה + האצלה ירושה המחלקה היורשת יכולה להוסיף פונקציונליות שלא

More information

תוכנה 1 * לא בהכרח בסדר הזה

תוכנה 1 * לא בהכרח בסדר הזה תוכנה 1 תרגול 7: מנשקים, פולימורפיזם ועוד * לא בהכרח בסדר הזה 2 מנשקים מנשקים מנשק )interface( הוא מבנה תחבירי ב- Java המאפשר לחסוך בקוד לקוח. מנשק מכיל כותרות של מתודות המימוש שלהן. )חתימות( ללא קוד אשר

More information

תוכנה 1 סמסטר א' תשע"א

תוכנה 1 סמסטר א' תשעא General Tips on Programming תוכנה 1 סמסטר א' תשע"א תרגול מס' 6 מנשקים, דיאגרמות וביטים * רובי בוים ומתי שמרת Write your code modularly top-down approach Compile + test functionality on the fly Start with

More information

הנכות 1 םוכיס לוגרת 13 1

הנכות 1 םוכיס לוגרת 13 1 תוכנה 1 סיכום תרגול 13 1 קצת על מנשקים מנשק יכול להרחיב יותר ממנשק אחד שירותים במנשק הם תמיד מופשטים וציבוריים public interface MyInterface { public abstract int foo1(int i); int foo2(int i); The modifiers

More information

תוכנה 1 * לא בהכרח בסדר הזה

תוכנה 1 * לא בהכרח בסדר הזה תוכנה 1 תרגול 7: מנשקים, פולימורפיזם ועוד * לא בהכרח בסדר הזה 2 מנשקים מנשקים - תזכורת מנשק )interface( הוא מבנה תחבירי ב- Java המאפשר לחסוך בקוד לקוח. מנשק מכיל כותרות של מתודות )חתימות(. מימוש דיפולטיבי

More information

הנכות 1 םוכיס לוגרת 13 1

הנכות 1 םוכיס לוגרת 13 1 תוכנה 1 סיכום תרגול 13 1 בחינה באופק! הבחינה תכלול את כל הנושאים שכיסינו במהלך הסמסטר: כל ההרצאות כל תרגולים כל תרגילי בית חומר סגור שאלות אמריקאיות 2 קצת על מנשקים מנשק יכול להרחיב שירותים במנשק הם תמיד

More information

תוכנה 1. תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes בית הספר למדעי המחשב אוניברסיטת תל אביב

תוכנה 1. תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes בית הספר למדעי המחשב אוניברסיטת תל אביב תוכנה 1 תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes בית הספר למדעי המחשב אוניברסיטת תל אביב 1 2 STATIC VS. DYNAMIC BINDING 3 Static versus Dynamic Binding public class Account

More information

תוכנה 1 ומחלקות פנימיות

תוכנה 1 ומחלקות פנימיות תוכנה 1 Design Patterns ומחלקות פנימיות תרגול 11: 1 Design Patterns A general reusable solution to recurring design problems. Not a recipe A higher level language for design Factory, Singleton, Observer

More information

הנכות 1 םוכיס לוגרת 13 1

הנכות 1 םוכיס לוגרת 13 1 תוכנה 1 סיכום תרגול 13 1 בחינה באופק! הבחינה תכלול את כל הנושאים שכיסינו במהלך הסמסטר: כל ההרצאות כל תרגולים כל תרגילי בית חומר סגור שאלות אמריקאיות 2 קצת על מנשקים מנשק יכול להרחיב יותר ממנשק אחד שירותים

More information

Java פעולות עוברות בירושה סביבת יסודות מדעי המחשב נספח הורשה

Java פעולות עוברות בירושה סביבת יסודות מדעי המחשב נספח הורשה 1 נספח הורשה פעולות עוברות בירושה.1 הפעולה ToString המחלקה קלף Card נכתוב את המחלקה המגדירה עצם מסוג קלף. תכונות המחלקה: מחרוזת המתארת את צורת הקלף )תלתן, מעוין, לב, עלה( מספר שלם בתחום 13-1 )כולל( המהווה

More information

תוכנה 1 * לא בהכרח בסדר הזה

תוכנה 1 * לא בהכרח בסדר הזה תוכנה 1 תרגול 7: מנשקים, פולימורפיזם ועוד * לא בהכרח בסדר הזה 2 מנשקים מנשקים מנשק )interface( הוא מבנה תחבירי ב- Java המאפשר לחסוך בקוד לקוח. מנשק מכיל כותרות של מתודות המימוש שלהן. )חתימות( ללא קוד אשר

More information

מבוא למדעי המחשב תרגול 8 רשימה משורשרת כללית, Comparator

מבוא למדעי המחשב תרגול 8 רשימה משורשרת כללית, Comparator מבוא למדעי המחשב 2017 תרגול 8 רשימה משורשרת כללית, Comparator בתרגול היום. LinkedList בניית ההכללה מ- LinkIntList תרגול המבנה ושימושיו ממשקים: Comparator Sorted Linked List ל- LinkedList ע"י שימוש ב- Comparator

More information

הנכות 1 םוכיס לוגרת 14 1

הנכות 1 םוכיס לוגרת 14 1 תוכנה 1 סיכום תרגול 14 1 קצת על מנשקים מנשק יכול להרחיב יותר ממנשק אחד שירותים במנשק הם תמיד מופשטים וציבוריים public interface MyInterface { public abstract int foo1(int i); int foo2(int i); The modifiers

More information

בית הספר למדעי המחשב אוניברסיטת תל אביב תוכנה 1 תרגול מספר 9: הורשה מחלקות אבסטרקטיות חריגים

בית הספר למדעי המחשב אוניברסיטת תל אביב תוכנה 1 תרגול מספר 9: הורשה מחלקות אבסטרקטיות חריגים בית הספר למדעי המחשב אוניברסיטת תל אביב תוכנה 1 תרגול מספר 9: הורשה מחלקות אבסטרקטיות חריגים 2 ירושה ממחלקות קיימות ראינו בהרצאה שתי דרכים לשימוש חוזר בקוד של מחלקה קיימת: הכלה + האצלה הכלה )aggregation(

More information

תוכנה 1 תרגול 2: מערכים, מבני בקרה ושגיאות

תוכנה 1 תרגול 2: מערכים, מבני בקרה ושגיאות תוכנה 1 תרגול 2: מערכים, מבני בקרה ושגיאות מערכים Array: A fixed-length data structure for storing multiple values of the same type Example: An array of odd numbers: Indices (start from 0) 0 1 2 3 4 5

More information

הנכות 1 תואיגש םע תודדומתהו תואלול,םי : כרעמ 2 לוגרת

הנכות 1 תואיגש םע תודדומתהו תואלול,םי : כרעמ 2 לוגרת תוכנה 1 תרגול 2: מערכים, לולאות והתמודדות עם שגיאות מערכים מערכים Array: A fixed-length data structure for storing multiple values of the same type Example from last week: An array of odd numbers: Indices

More information

תוכנה 1 תרגול 2: מערכים ומבני בקרה

תוכנה 1 תרגול 2: מערכים ומבני בקרה תוכנה 1 תרגול 2: מערכים ומבני בקרה 2 Useful Eclipse Shortcuts Ctrl+1 quick fix for errors, or small refactoring suggestions Ctrl+SPACE code content assist (auto-completion) Auto completion for main create

More information

הנכות 1 תואיגש םע תודדומתהו תואלול,םיכרעמ : לו 2 גרת

הנכות 1 תואיגש םע תודדומתהו תואלול,םיכרעמ : לו 2 גרת תוכנה 1 תרגול 2: מערכים, לולאות והתמודדות עם שגיאות מערכים Array: A fixed-length data structure for storing multiple values of the same type Example from last week: An array of odd numbers: Indices (start

More information

תוכנה 1 בשפת Java נושאים שונים בהורשה רובי בוים ומתי שמרת בית הספר למדעי המחשב אוניברסיטת תל אביב

תוכנה 1 בשפת Java נושאים שונים בהורשה רובי בוים ומתי שמרת בית הספר למדעי המחשב אוניברסיטת תל אביב תוכנה 1 בשפת Java נושאים שונים בהורשה רובי בוים ומתי שמרת בית הספר למדעי המחשב אוניברסיטת תל אביב Today Static vs. Dynamic binding Equals / hashcode String Immutability (maybe) 2 Static versus run-time

More information

תכנות מונחה עצמים משחקים תשע"ו

תכנות מונחה עצמים משחקים תשעו move semantics 1 תכנות מונחה עצמים ופיתוח משחקים תשע"ו סמנטיקת ההעברה semantics( )Move move semantics 2 מטרה האצה של התוכניות, שיפור בביצועים על ידי חסכון בבנייה והעתקה של אובייקטים זמניים move semantics

More information

תוכנה 1 תרגול מספר 13

תוכנה 1 תרגול מספר 13 1 תוכנה 1 תרגול מספר 13 ו- HashCode Equals עוד על טיפוסים מוכללים )Advanced Generics( חריגים )Exceptions( בית הספר למדעי המחשב אוניברסיטת תל אביב 1 2 ו- HASHCODE EQUALS 3 תזכורת: המחלקה Object package

More information

תוכנה 1 תרגול מספר 13

תוכנה 1 תרגול מספר 13 1 2 תוכנה 1 תרגול מספר 13 ו- HashCode Equals עוד על טיפוסים מוכללים )Advanced Generics( ו- HASHCODE EQUALS חריגים )Exceptions( בית הספר למדעי המחשב אוניברסיטת תל אביב 1 3 4 package java.lang; תזכורת: המחלקה

More information

ASP.Net Web API.

ASP.Net Web API. ASP.Net Web API 1 מה זה? Web API View בלבד ולא Data אותו מממש השרת והוא מחזיר לקליינט API הוא Web API הבקשה והתשובה הן בפרוטוקול Http\Https הקליינטים של Web API יכולים להיות רבים : אפשר להשתמש גם בMVC

More information

Algorithms. Intro2CS week 5

Algorithms. Intro2CS week 5 Algorithms Intro2CS week 5 1 Computational problems A computational problem specifies an inputoutput relationship What does the input look like? What should the output be for each input? Example: Input:

More information

מבוא למדעי המחשב השפעת השינוי על סטודנט הרצאה 18: פולימורפיזם ומחלקות אבסטרקטיות אם ברצוננו ששכר הלימוד לא יעלה על 2500.

מבוא למדעי המחשב השפעת השינוי על סטודנט הרצאה 18: פולימורפיזם ומחלקות אבסטרקטיות אם ברצוננו ששכר הלימוד לא יעלה על 2500. public class { private static final int COURSE_PRICE = 1000; private String nae; private int id; private int nuofcourses; מבוא למדעי המחשב הרצאה 18 פולימורפיזם ומחלקות אבסטרקטיות תזכורת public (int id,

More information

תרגול 6 רקורסיה ותכנות מונחה עצמים

תרגול 6 רקורסיה ותכנות מונחה עצמים מבוא למדעי המחשב 2017 תרגול 6 רקורסיה ותכנות מונחה עצמים מבוא למדעי המחשב 1 ראינו בהרצאה רקורסיה תכנות מונחה עצמים: מחלקה ואובייקט שדות, בנאים ושיטות מימוש מערך דינאמי של ראשוניים בתרגול היום רקורסיה הדפסת

More information

שיעור מספר 3: "מחלקות וטיפוסים"

שיעור מספר 3: מחלקות וטיפוסים שיעור מספר 3: "מחלקות וטיפוסים" בית הספר למדעי המחשב על סדר היום מודל הזיכרון של Java Heap and Stack העברת ארגומנטים מנגנוני שפת Java עצמים ושירותי מופע 2 העברת ארגומנטים כאשר מתבצעת קריאה לשרות, ערכי

More information

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions מבוא לתיכנות עם MATLAB 23427 Lecture 5: Boolean logic and Boolean expressions Written by Prof. Reuven Bar-Yehuda, Technion 203 Based on slides of Dr. Eran Eden, Weizmann 2008 ביטויים לוגיים דוגמא: תקינות

More information

תוכנה 1 מערכים. Array Creation and Initialization. Array Declaration. Loop through Arrays. Array Creation and Initialization

תוכנה 1 מערכים. Array Creation and Initialization. Array Declaration. Loop through Arrays. Array Creation and Initialization מערכים תוכנה 1 Array: A fixed-length data structure for storing multiple values of the same type Example from last week: An array of odd numbers: Indices (start from 0) 0 1 2 3 4 5 6 7 תרגול 2: מערכים

More information

תוכנה 1 מערכים. Array Creation and Initialization. Array Declaration. Array Creation and Initialization. Loop through Arrays

תוכנה 1 מערכים. Array Creation and Initialization. Array Declaration. Array Creation and Initialization. Loop through Arrays מערכים Array: A fixed-length data structure for storing multiple values of the same type תוכנה 1 Example: An array of odd numbers: Indices (start from 0) 0 1 2 3 4 5 6 7 odds: 1 3 5 7 9 11 13 15 odds.length

More information

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions מבוא לתיכנות עם MATLAB 234127 Lecture 5: Boolean logic and Boolean expressions Written by Prof. Reuven Bar-Yehuda, Technion 2013 Based on slides of Dr. Eran Eden, Weizmann 2008 1 >>g = [89 91 80 98]; >>p

More information

תוכנה 1 3 תרגול מס' מערכים ומבני בקרה

תוכנה 1 3 תרגול מס' מערכים ומבני בקרה תוכנה 1 3 תרגול מס' מערכים ומבני בקרה מערכים Array: A fixed-length data structure for storing multiple values of the same type Example: An array of odd numbers: Indices (start from 0) 0 1 2 3 4 5 6 7 odds:

More information

מבוא למדעי המחשב תרגול 13: עצים בינאריים

מבוא למדעי המחשב תרגול 13: עצים בינאריים מבוא למדעי המחשב תרגול 13: עצים בינאריים עצים בינאריים - הגדרה הגדרה: עץ בינארי הוא עץ ריק (בלי צמתים) או עץ המורכב משורש ושני תתי-עצים, הוא עץ בינארי. ימני ושמאלי, שכל אחד מהם תרגיל 1 עץ בינארי מסודר

More information

מחרוזות ב Java ותכנות מונחה בדיקות )Test Driven Development(

מחרוזות ב Java ותכנות מונחה בדיקות )Test Driven Development( מחרוזות ב Java ותכנות מונחה בדיקות )Test Driven Development( תוכנה 1 תרגול 8 String Immutability Strings are constants String s = " Tea "; s = s.trim(); s = s.replace('t', 'S'); s 1 2 3 " Tea " "Tea" "Sea"

More information

Practical Session - Heap

Practical Session - Heap Practical Session - Heap Heap Heap Maximum-Heap Minimum-Heap Heap-Array A binary heap can be considered as a complete binary tree, (the last level is full from the left to a certain point). For each node

More information

מבוא לתכנות ב- JAVA תרגול 7

מבוא לתכנות ב- JAVA תרגול 7 מבוא לתכנות ב- JAVA תרגול 7 רקורסיה - הקדמה הגדרה רקורסיבית: חדר הוא מסודר אם צד שמאל שלו מסודר שלו מסודר. וצד ימין שיטת פתרון רקורסיבית: פתרון מופעים פשוטים יותר של בעיה בכדי לפתור את הבעיה המקורית רקורסיה

More information

תזכורת: עץבינארי מבוא למדעי המחשב הרצאה 24: עצי חיפוש בינאריים

תזכורת: עץבינארי מבוא למדעי המחשב הרצאה 24: עצי חיפוש בינאריים מבוא למדעי המחשב הרצאה 2: עצי חיפוש בינאריים תזכורת: עץבינארי בנוסףלרשימהמקושרת ומערך, הצגנומבנהנתונים קונקרטיחדש עץבינארי עץבינארימורכבמ: שורש תת-עץשמאלי תת-עץימני A B C D E F G 2 תזכורת: שורש ותתי-עצים

More information

Tutorial 10. Introduction to C++ שימו

Tutorial 10. Introduction to C++ שימו Introduction to ++ שימו תרגול זה אינו התרגול הרישמי של הקורס. הוא מבוסס על חוברת התרגולים אך מכיל שינויים, הסברים נוספים ודוגמאות שונות או נוספות. + + תוכנ ית רא שונה ב הכרו ת עם + + תרגול // First ++

More information

מערכים שעור מס. 4 כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1

מערכים שעור מס. 4 כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1 מערכים שעור מס. 4 דרור טובי דר' כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1 למה מערכים? ברצוננו לאחסן בתוכנית ציוני בחינה כדי לחשב את ממוצע הציונים וסטיית התקן. נניח ש 30 סטודנטים לקחו

More information

ספרית התבניות הסטנדרטית (STL) כתיבת אלגוריתמים גנריים מצביעים חכמים. .vector. list iterator נכיר תחילה את האוסף הפשוט ביותר בספריה

ספרית התבניות הסטנדרטית (STL) כתיבת אלגוריתמים גנריים מצביעים חכמים. .vector. list iterator נכיר תחילה את האוסף הפשוט ביותר בספריה ספרית התבניות הסטנדרטית (STL) כתיבת אלגוריתמים גנריים מצביעים חכמים vector list iterator 2 קיימת בכל מימוש של ++C מכילה אוספים (Containers) ואלגוריתמים נכיר תחילה את האוסף הפשוט ביותר בספריה.vector מערך

More information

סכום (סדרת ערכים) אחרת - דוגמא: סכום-ספרות (num) אם < 10 num החזר 1 או אם = 0 = num החזר 0 public static int numofdigits (int num)

סכום (סדרת ערכים) אחרת - דוגמא: סכום-ספרות (num) אם < 10 num החזר 1 או אם = 0 = num החזר 0 public static int numofdigits (int num) 1 תבנית צבירה תבניות אלגוריתמיות לפעולות רקורסיביות תבנית צבירה לסדרת ערכים: סכום (סדרת ערכים) החזר את ערך הקצה + סכום (סדרת הערכים ללא ערך הקצה) דוגמא: פעולה המחזירה את סכום הספרות שבמספר שלם לא שלילי

More information

Enumerated Types טיפוסי מנייה בית הספר למדעי המחשב אוניברסיטת תל אביב

Enumerated Types טיפוסי מנייה בית הספר למדעי המחשב אוניברסיטת תל אביב Enumerated Types טיפוסי מנייה בית הספר למדעי המחשב אוניברסיטת תל אביב Enumerated Types טיפוסים שכל מופעיהם קבועים וידועים מראש שכיחים מאוד בעולם התוכנה: package cards.domain; public class PlayingCard {

More information

תכנות מתקדם בשפת C משתנים

תכנות מתקדם בשפת C משתנים תכנות מתקדם בשפת C משתנים 1 משתנים סוגי משתנים בשפת C ההבדלים בין סוגי המשתנים השונים 2 /* This program computes m to the power of n */ /* Assumptions: m is an integer; n is a positive integer */ #include

More information

תוכנה 1 תרגול מספר 10: תרגיל חזרה חברת הייטק בית הספר למדעי המחשב אוניברסיטת תל אביב

תוכנה 1 תרגול מספר 10: תרגיל חזרה חברת הייטק בית הספר למדעי המחשב אוניברסיטת תל אביב 1 תוכנה 1 תרגול מספר 10: תרגיל חזרה חברת הייטק בית הספר למדעי המחשב אוניברסיטת תל אביב 1 2 חברת הייטק בתרגיל זה נתרגל מספר נושאים אותם למדנו בשיעורים האחרונים: עיצוב ובניית מודל המורכב ממחלקות לתיאור סביבה

More information

תור שימושים בעולם התוכנה

תור שימושים בעולם התוכנה מבוא למדעי המחשב הרצאה : Queue, Iterator & Iterable תור מבנה נתונים אבסטרקטי תור שימושים בעולם התוכנה השימושים של תורים בעולם התוכנה מזכירים מאוד תורים במציאות: )VoIP( )YouTube( מקלדת שידור סרט באינטרנט

More information

Object-Oriented Analysis and Design

Object-Oriented Analysis and Design Object-Oriented Analysis and Design Session 2a: Structure Modeling Object-Oriented Analysis and Design 1 Outline 1. Objects and Classes 4 2. Basic Association Concepts.17 3. Class Diagrams and Object (instance)

More information

ENUMERATED TYPES טיפוסי מנייה שחר מעוז תוכנה 1 בשפת ג'אווה אוניברסיטת תל אביב

ENUMERATED TYPES טיפוסי מנייה שחר מעוז תוכנה 1 בשפת ג'אווה אוניברסיטת תל אביב ENUMERATED TYPES טיפוסי מנייה שחר מעוז אוניברסיטת תל אביב ENUMERATED TYPES package cards.domain; public class PlayingCard { טיפוסים שכל מופעיהם קבועים וידועים מראש שכיחים מאוד בעולם התוכנה: // pseudo enumerated

More information

Simple Web Service. namespace MyService { public class Service1 : System.Web.Services.WebService {

Simple Web Service. namespace MyService { public class Service1 : System.Web.Services.WebService { Simple Web Service WS פתיחת פרוייקט File New Project ASP.Net web service project - >http://localhost/webservice1 יצירת שירות המחשב חיבור וחילוק 2 מספרים : הטיפוסים הבסיסיים using System; איסוף וניהוף אוספי

More information

מבוא לתכנות בשפת C. Tzachi (Isaac) Rosen

מבוא לתכנות בשפת C. Tzachi (Isaac) Rosen מבוא לתכנות בשפת C מצביעים והקצאה דינאמית כתובות של משתנים לכל משתנה כתובת של המקום שלו בזיכרון כבר ראינו: שם של מערך הוא למעשה הכתובת של התא הראשון )באינדקס 0( של המערך להזכירכם: תא של מערך הינו משתנה

More information

Practical Session No. 14 Topological sort,amortized Analysis

Practical Session No. 14 Topological sort,amortized Analysis Practical Session No. 14 Topological sort,amortized Analysis Topological- Sort Topological sort Ordering of vertices in a directed acyclic graph (DAG) G=(V,E) such that if there is a path from v to u in

More information

מצליחה. 1. int fork-bomb() 2. { 3. fork(); 4. fork() && fork() fork(); 5. fork(); printf("bla\n"); 8. return 0; 9. }

מצליחה. 1. int fork-bomb() 2. { 3. fork(); 4. fork() && fork() fork(); 5. fork(); printf(bla\n); 8. return 0; 9. } שאלה : (4 נקודות) א. ב. ג. (5 נקודות) הגדירו את המונח race-condition במדוייק לא להשמיט פרטים. ספקו דוגמא. (5 נקודות) מהו? Monitor נא לספק הגדרה מלאה. ( נקודות) ( נקודות) ציינו כמה תהליכים יווצרו בקוד הבא

More information

גיליון תשובות מספר נבחן:

גיליון תשובות מספר נבחן: גיליון תשובות מספר נבחן: 30( שאלה 1 נקודות( א. ב. התכונה הנשמרת מתייחסת אך ורק למיקום המכוניות בצומת, כלומר למיקום המכוניות בשדה _cars הגישה לשדה זה מסונכרנת, אך מצד שני אין בדיקה של מיקום המכונית טרם

More information

היצביט ומ - ןוכית ת וי נבת

היצביט ומ - ןוכית ת וי נבת תבני ו ת תיכון Patterns) (Design תבנ יו ת תיכון - מו טיבציה בחיי היום יום אנחנו מתארים דברים תוך שימוש בתבניות חוזרות: "מכונית א' היא כמו מכונית ב', אבל יש לה 2 דלתות במקום 4" "אני רוצה ארון כמו זה, אבל

More information

Amortized Analysis, Union-Find,

Amortized Analysis, Union-Find, Practical Session No. 13 Amortized Analysis, Union-Find, AMORTIZED ANALYSIS Refers to finding the average running time per operation, over a worst-case sequence of operations. Amortized analysis differs

More information

מבוא לתכנות ב- JAVA מעבדה 2

מבוא לתכנות ב- JAVA מעבדה 2 מבוא לתכנות ב- JAVA מעבדה 2 מה בתרגול טיפוסים פרימיטיביים המרות טיפוסים אופרטורים יחסיים ולוגיים משפט if-else בתרגול הקודם טיפוסים פרימיטביים לייצוג מספרים שלמים וממשיים ואופרטורים לפעולות בין מספרים.1

More information

דף הדרכה ליצירת שרת/ לקוח עם GUI

דף הדרכה ליצירת שרת/ לקוח עם GUI דף הדרכה ליצירת שרת/ לקוח עם GUI בשיעורים הקודמים למדנו כיצד ליצור שרת לקוח פשוט, ויצירת טופס המכיל פקדים כלומר יצירת GUI למשתמש, בשיעור זה נרצה להראות את הדרך לשילוב בין השניים כלומר ליצור לקוח client

More information

Computer Programming A תרגול 9

Computer Programming A תרגול 9 Computer Programming A תרגול 9 1 מטרת התרגול הקצאת זיכרון מבנים רשימות דינאמית ניהול הזיכרון בתוכנית עד כה כל המשתנים שראינו היו לוקאליים. משך הקיום של משתנים מקומיים הוא הזמן אשר הפונקציה בה הם נמצאים

More information

תוכנה 1 תרגול מספר 10: תרגיל חברת הייטק בית הספר למדעי המחשב אוניברסיטת תל אביב

תוכנה 1 תרגול מספר 10: תרגיל חברת הייטק בית הספר למדעי המחשב אוניברסיטת תל אביב 1 תוכנה 1 תרגול מספר 10: תרגיל חברת הייטק בית הספר למדעי המחשב אוניברסיטת תל אביב 1 2 חברת הייטק בתרגיל זה נתרגל מספר נושאים אותם למדנו בשיעורים האחרונים: עיצוב ובניית מודל המורכב ממחלקות לתיאור סביבה

More information

מבוא למדעי המחשב הרצאה 18: פולימורפיזם ומחלקות אבסטרקטיות

מבוא למדעי המחשב הרצאה 18: פולימורפיזם ומחלקות אבסטרקטיות מבוא למדעי המחשב הרצאה 18: פולימורפיזם ומחלקות אבסטרקטיות 1 class Student public class Student { private static final int COURSE_PRICE = 1000; private String name; private int id; private int numofcourses;

More information

תרגול 12. Standard Template Library כתיבת אלגוריתמים גנריים מצביעים חכמים

תרגול 12. Standard Template Library כתיבת אלגוריתמים גנריים מצביעים חכמים תרגול 12 Standard Template Library כתיבת אלגוריתמים גנריים מצביעים חכמים ספרית התבניות הסטנדרטית קיימת בכל מימוש של ++C מכילה אוספים (Containers) ואלגוריתמים. משתמשת בתבניות :(templates) אוספי הנתונים

More information

- מבחן. - 4 עבודות ב- JAVA. הגשה בזוגות דרך ה- System Submission

- מבחן. - 4 עבודות ב- JAVA. הגשה בזוגות דרך ה- System Submission 1 - מבחן. - 4 עבודות ב- JAVA 60% 40% הגשה בזוגות דרך ה- System Submission 2 UML Class Diagrams Packages Class Path JAR Files חלק ראשון: חלק שני: 3 An abstraction of software features A structure that singles

More information

תרגול מספר 3: מערכים

תרגול מספר 3: מערכים היום בתרגול:.1.2 תרגול מספר 3: מערכים מערך חד-מימדי: מה זה מערך ולמה צריך אותו? איך מגדירים? איך זה נראה בזכרון? דוגמאות לשימוש במערך חד-מימדי השוואה בין משתנה פרימיטיבי למשתנה שאינו פרימיטיבי מערך דו-מימדי:

More information

רזח יליגרתו םי יראני ב ם

רזח יליגרתו םי יראני ב ם מבוא למדעי המחשב עצים בינאריים ותרגילי חזרה תרגול 13: עצים בינאריים - הגדרה הגדרה: עץ בינארי הוא עץ ריק )בלי צמתים( או עץ המורכב משורש ושני תתי-עצים, הוא עץ בינארי. ימני ושמאלי, שכל אחד מהם שאלה עץ בינארי

More information

Communication Networks ( ) / Spring 2011 The Blavatnik School of Computer Science, Tel-Aviv University. Allon Wagner

Communication Networks ( ) / Spring 2011 The Blavatnik School of Computer Science, Tel-Aviv University. Allon Wagner Communication Networks (0368-3030) / Spring 2011 The Blavatnik School of Computer Science, Tel-Aviv University Allon Wagner Kurose & Ross, Chapter 3.5.5, 3.7 (5 th ed.) Many slides adapted from: J. Kurose

More information

פרק 15 טיפוס חדש: מבנים שימוש במבנים שימוש במבנים שימוש במבנים

פרק 15 טיפוס חדש: מבנים שימוש במבנים שימוש במבנים שימוש במבנים פרק 15 ב- C מבנים טיפוס חדש: מבנים 1 מבנה (structure) הוא טיפוס מורכב בשפת C (בניגוד לטיפוס בסיסי). זהו טיפוס שמיועד לאיחוד קבוצת משתנים תחת שם אחד. משתנים אלו נקראים השדות של המבנה, והם יכולים להיות מטיפוסים

More information

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions מבוא לתיכנות עם MATLAB 234127 Lecture 5: Boolean logic and Boolean expressions Written by Prof. Reuven Bar-Yehuda, Technion 2013 Based on slides of Dr. Eran Eden, Weizmann 2008 1 motivation Proper academic

More information

מבוא למדעי המחשב תירגול 2: מבוא למדעי המחשב מ' - תירגול 2

מבוא למדעי המחשב תירגול 2: מבוא למדעי המחשב מ' - תירגול 2 מבוא למדעי המחשב תירגול 2: לולאות, קלט, וטיפוסים 1 תוכנייה לולאת while קלט טיפוסי משתנים המרת טיפוסים טיפוס char 2 לולאת while 3 לולאת while קטע קוד מתבצע שוב ושוב כל עוד תנאי מתקיים int number = 40; while(number>0)

More information

תוכנה 1 טיפוסי השפה טיפוסים לא פרימיטיביים הטיפוסים הפרימיטיביים מחרוזות המרה למספרים תרגול 2: טיפוסי שפה, מחרוזות, מערכים ושגיאות

תוכנה 1 טיפוסי השפה טיפוסים לא פרימיטיביים הטיפוסים הפרימיטיביים מחרוזות המרה למספרים תרגול 2: טיפוסי שפה, מחרוזות, מערכים ושגיאות טיפוסי השפה תוכנה 1 תרגול 2: טיפוסי שפה, מחרוזות, מערכים ושגיאות טיפוסים יסודיים (פרימיטיביים): 8 טיפוסים מוגדרים בשפה שמיועדים להכיל ערכים פשוטים: מספרים שלמים: byte, short, int, long מספרים ממשיים: float,

More information

קורס תכנות כתובות בזיכרון כתובות בזכרון מצביעים וכתובות מצביעים וכתובות שיעור שביעי: מבנים, הקצאת זיכרון דינאמית האופרטור &

קורס תכנות כתובות בזיכרון כתובות בזכרון מצביעים וכתובות מצביעים וכתובות שיעור שביעי: מבנים, הקצאת זיכרון דינאמית האופרטור & כתובות בזיכרון קורס תכנות int x = 10; char c = a ; 10 784658 'a' 26537 שם x כתובת 784658 שיעור שביעי: מבנים, הקצאת זיכרון דינאמית 26537 c 1 הגדרת מצביע variable( )pointer כתובות בזכרון האופרטור & מחזיר

More information

Advanced Lab in Computer Communications Meeting 1 Layers Model, Codes, Ethernet. Instructor: Tom Mahler

Advanced Lab in Computer Communications Meeting 1 Layers Model, Codes, Ethernet. Instructor: Tom Mahler Advanced Lab in Computer Communications Meeting 1 Layers Model, Codes, Ethernet Instructor: Tom Mahler Course Objective הודעות כלליות מעבר על דף מידע OSI Model Classical 7 layers model IP model Application

More information

הנדסת תוכנה 11. מבוא לתבניות תיכון. se15b-yagel 1

הנדסת תוכנה 11. מבוא לתבניות תיכון. se15b-yagel 1 הנדסת תוכנה 11. מבוא לתבניות תיכון se15b-yagel 1 מה היום? מבוא לתבניות תיכון Design Patterns הדגמה כולל BDD ו- Refactoring לפי הזמן, השלמת בקרת תצורה: Git Workflows בהמשך: עקרונות תיכון מונחה עצמים עבודה

More information

Nir Adar

Nir Adar שפת Java למתכנתי ++C - חלק שני מסמך זה הורד מהאתר. אין להפיץ מסמך זה במדיה כלשהי, ללא אישור מפורש מאת המחבר. מחבר המסמך איננו אחראי לכל נזק, ישיר או עקיף, שיגרם עקב השימוש במידע המופיע במסמך, וכן לנכונות

More information

קורס תכנות שיעור שני: שימוש במשתנים,

קורס תכנות שיעור שני: שימוש במשתנים, קורס תכנות שיעור שני: שימוש במשתנים, בקרת זרימה, לולאות 1 נושאי השיעור היום משתנים )variables( טיפוסי משתנים בשפת C הגדרת משתנים השמה למשתנים פעולות על משתנים קליטת ערכים מהמשתמש הדפסה משתנים בקרת זרימה

More information

<exp> ::= <define> <cexp> <define> ::= ( define <var-decl> <cexp> ) / DefExp(var:VarDecl, val:cexp)

<exp> ::= <define> <cexp> <define> ::= ( define <var-decl> <cexp> ) / DefExp(var:VarDecl, val:cexp) הנחיות כלליות: תאריך הבוחן: 10.5.2018 שם המרצה: מני אדלר,מיכאל אלחדד, ירון גונן מבחן בקורס: עקרונות שפות תכנות מס' קורס: 202-1-2051 מיועד לתלמידי: מדעי המחשב והנדסת תוכנה שנה: ב' סמסטר: ב' משך הבוחן: 2

More information

מבוא למדעי המחשב תירגול 3:

מבוא למדעי המחשב תירגול 3: מבוא למדעי המחשב תירגול 3: לולאות, קלט, וטיפוסים תוכנייה לולאת while קלט טיפוסי משתנים המרת טיפוסים טיפוס char מבוא למדעי המחשב מ' - תירגול 3 2 לולאת while מבוא למדעי המחשב מ' - תירגול 3 3 לולאת while

More information

Introduction to Programming in C תרגול 8

Introduction to Programming in C תרגול 8 Introduction to Programming in C תרגול 8 1 1 נושאים מצביעים רקע אופרטורים על מצביעים מצביעים כפרמטרים לפונקציה הקצאה דינמית מבנים תאור הזיכרון של המחשב: מצביעים ניתן לחשוב על זיכרון המחשב כעל רצף של תאים,

More information

תרשים המחלקות ותרשים העצמים

תרשים המחלקות ותרשים העצמים 1 תרשים המחלקות ותרשים העצמים חלק שלישי: ניתוח ועיצוב מערכות מידע באמצעות שימוש ב- UML ומתודולוגיית ה- Process )UP( Unified E1 3 E2 2 Outline UML Introduction Class Diagram Class Association Self association

More information

תרגול 3 מערכים ופונקציות

תרגול 3 מערכים ופונקציות מבוא למדעי המחשב 2017 תרגול 3 מערכים ופונקציות מערכים מאפשרים עבודה עם מקבצים של נתונים פונקציות מאפשרות אבסטרקציה והאחדה של הקוד ראינו בהרצאה מערכים הצהרה, אתחול, גישה לאיברים במערך יצוג בזיכרון ובטבלת

More information

Introduction to OOP. Contents:

Introduction to OOP. Contents: 11/9/2014 Introduction to OOP. Any fool can write code that a computer can understand. Good programmers write code that humans can understand. (Martin Fowler) Presented by: Contents: History; C refrain;

More information

תרגול 4 פונקציות. מבנה של פונקציה: public static <return value type> <function name> (<arg1 type> <arg1>, <arg2 type> <arg2>, ) { <function body> }

תרגול 4 פונקציות. מבנה של פונקציה: public static <return value type> <function name> (<arg1 type> <arg1>, <arg2 type> <arg2>, ) { <function body> } נושאי התרגול: מה הן פונקציות הגדרת פונקציה,קריאה לפונקציה העברת ארגומנטים,החזרת ערך או void העברת משתנים פרימיטיביים ומערכים לפונקציה העמסה של פונקציות תרגול 4 פונקציות מוטיבציה לעיתים,אנו נזקקים לבצע

More information

ב ה צ ל ח ה! אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ה תשרי תשע"ח 15/10/17 שמות המורים: ציון סיקסיק מיועד לתלמידי : א'

ב ה צ ל ח ה! אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כה תשרי תשעח 15/10/17 שמות המורים: ציון סיקסיק מיועד לתלמידי : א' אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ה תשרי תשע"ח 15/10/17 שמות המורים: ציון סיקסיק א' ב- C תכנות מבחן ב: 202-1-9011 מס' הקורס : הנדסה מיועד לתלמידי : א' מועד קיץ סמ' שנה תשע"ז 3 שעות משך

More information

משתנים שעור מס. 2 כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1

משתנים שעור מס. 2 כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1 משתנים שעור מס. 2 דרור טובי דר' כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1 תפקיד המשתנים הצהרה על משתנה השמת ערך במשתנה int a, b, c; a = 1234; b = 99; c = a + b; משתנים מאפשרים לנו לשמור

More information

קורס תכנות רשימה מקושרת דוגמה: חיפוש מעבר על רשימה דוגמא: שחרור רשימה מקושרת דוגמא: הוספת אברים שלא בהתחלה

קורס תכנות רשימה מקושרת דוגמה: חיפוש מעבר על רשימה דוגמא: שחרור רשימה מקושרת דוגמא: הוספת אברים שלא בהתחלה רשימה מקושרת רשימה היא אוסף סדור של ערכים פעולות רשימה לעומת מערך קורס תכנות שיעור עשירי: מיונים, חיפושים, קצת ניתוח זמני ריצה, קצת תיקון טעויות ועוד על רשימות 3 5 7 9 typedef struct node int data; struct

More information

מבוא לתכנות ב- JAVA מעבדה 4

מבוא לתכנות ב- JAVA מעבדה 4 מבוא לתכנות ב- JAVA מעבדה 4 מה בתרגול מערכים מחרוזות מערך חד מימדי מערך הוא מבנה המחזיק סדרה של איברים מאותו טיפוס גודל המערך הוא קבוע )נקבע בעת יצירת המערך( הגישה לכל איבר היא באמצעות אינדקס למה לי מערך?

More information

קורס תכנות שיעור שישי: מחרוזות, מצביעים

קורס תכנות שיעור שישי: מחרוזות, מצביעים קורס תכנות שיעור שישי: מחרוזות, מצביעים מערכים אוסף סדור של משתנים מאותו סוג המשתנים נמצאים ברצף בזיכרון העברת מערך לפונקציה Define רקורסיה במערך מערכים דו מימדיים 2 מחרוזות מהי מחרוזת? רצף של תוים ייצוג

More information

מדעי המחשב 2 יחידות לימוד פתרון בחינת הבגרות פרק א. I x > a. פתרון 2: משפט switch

מדעי המחשב 2 יחידות לימוד פתרון בחינת הבגרות פרק א. I x > a. פתרון 2: משפט switch 1 מדעי המחשב 2 יחידות לימוד פתרון בחינת הבגרות שאלה פרק א :1 m a b k k b x I x > a II x < b פלט I && II 0 8 12 8 4 1 9 11 2 10 11 9 8 2 12 35 13 העמודות המסומנות בכחול אינן עמודות חובה בפתרון. שאלה 2:

More information

ממשק משתמש גרפי בעזרת SWT

ממשק משתמש גרפי בעזרת SWT ממשק משתמש גרפי בעזרת SWT מה עושים היום? קריאת Stack Trace של חריגה hashcode ו- equals ממשק משתמש גרפי תוכנה 1 בשפת Java 2 1 Interpreting Stack Trace of an Exception Exception in thread "main" java.lang.outofmemoryerror:

More information

מבוא לתכנות מערכות מבחן מועד א' סמסטר חורף

מבוא לתכנות מערכות מבחן מועד א' סמסטר חורף הפקולטה למדעי המחשב פרופ' גיל ברקת נועם שגב, שרי דואק, רן ברואר, דור כהן הטכניון מכון טכנולוגי לישראל 70.70.07.4 מבוא לתכנות מערכות 024.00 מבחן מועד א' סמסטר חורף 07.207.4 הוראות כלליות משך המבחן: 081

More information

גיליון תשובות מספר נבחן: סעיף ג (10 נקודות) הגדרת בטיחות הינה שמירה על האינווריאנטה של האובייקטים במהלך ההרצה.

גיליון תשובות מספר נבחן: סעיף ג (10 נקודות) הגדרת בטיחות הינה שמירה על האינווריאנטה של האובייקטים במהלך ההרצה. גיליון תשובות מספר נבחן: (30 נקודות) שאלה 1 סעיף א (15 נקודות) remove() המתודה remove() גם משנה את מצב האובייקט,(command) וגם מחזירה ערך.(query) על פי עקרונות העיצוב שלמדנו בכיתה יש להפריד שאילתות מפקודות.

More information

הפרדה בין מודל ותצוגה מקרה מבחן לעקרונות רב מימדיים

הפרדה בין מודל ותצוגה מקרה מבחן לעקרונות רב מימדיים הפרדה בין מודל ותצוגה מקרה מבחן לעקרונות רב מימדיים MVC Model View Controller Design Pattern (MVC) רעיון ההפרדה בין מודל לתצוגה אינו ייחודי רק ל GUI System.out.println(new Date()); לדוגמא: מה תדפיס השורה:

More information

רשימות דילוגים Skip Lists

רשימות דילוגים Skip Lists Lecture6 of Geiger & Itai s slide brochure www.cs.technion.ac.il/~dang/courseds רשימות דילוגים Skip Lists Skip lists: A probabilistic Alternative to Balanced Trees, William Pugh, Communications of the

More information

Exams questions examples

Exams questions examples Exams questions examples 1 Exam example 1. y - x what נק' ( לפניך הפעולה הרקורסיבית מקבלת כפרמטרים שני מספרים שלמים ו 10 )? מה יהיה הפלט כתוצאה מזימון הפעולה what public static int what(int x, int y) if(x

More information

Operating Systems. Practical Session 4 Threads

Operating Systems. Practical Session 4 Threads Operating Systems Practical Session 4 Threads 1 Threads Executed within a process. Allow multiple independent executions under the same process (container). Possible states: running, ready, blocked, terminated.

More information

Introduction to OOP. Contents:

Introduction to OOP. Contents: 03/12/2016 Introduction to OOP. Any fool can write code that a computer can understand. Good programmers write code that humans can understand. (Martin Fowler) Presented by: Contents: History; C refrain;

More information

Smart Pointers Nir Adar

Smart Pointers Nir Adar 7.1.2005 גירסה 1.00 Smart Pointers מסמך זה הורד מהאתר. אין להפיץ מסמך זה במדיה כלשהי, ללא אישור מפורש מאת המחבר. מחבר המסמך איננו אחראי לכל נזק, ישיר או עקיף, שיגרם עקב השימוש במידע המופיע במסמך, וכן לנכונות

More information

Asymptotically almost every 2r-regular graph has an internal partition

Asymptotically almost every 2r-regular graph has an internal partition האוניברסיטה העברית בירושלים הפקולטה למתמטיקה ולמדעי הטבע בית הספר למדעי המחשב The Hebrew University of Jerusalem Faculty of Science The Rachel and Selim Benin School of Computer Science and Engineering

More information

עקרונות שפות תכנות 2016 תרגול 8 Type Inference System. Substitution Interpreter.

עקרונות שפות תכנות 2016 תרגול 8 Type Inference System. Substitution Interpreter. עקרונות שפות תכנות 2016 תרגול 8 Type Inference System. Substitution Interpreter. Type Inference System The Type Inference System is a Scheme Implementation of the algorithm for Type Checking and Inference

More information